/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CalculatorActions;

import calculatoradvanced.CalculatorAdvancedView;
import javax.swing.JButton;
import java.util.ArrayList;
import javax.swing.JRadioButton;
/**
 *
 * @author Mauro
 */
public class Controller {

    Logic operation=new Logic();
    ArrayList<String> datos=new ArrayList();
    private String valorOriginal="0";

    //Metodo que controla el cambio de formato numerico de la calculadora.
    public void cambioTipoNumerico(CalculatorAdvancedView calculadora,java.awt.event.ActionEvent evt){
        JRadioButton boton=(JRadioButton)evt.getSource();
        String tecla=boton.getText();
        if(tecla.equals("Decimal")){
            calculadora.Binario().setEnabled(true);
            calculadora.Binario().setSelected(false);
            calculadora.Hexadecimal().setEnabled(true);
            calculadora.Hexadecimal().setSelected(false);
            calculadora.Decimal().setSelected(true);
            calculadora.Decimal().setEnabled(false);
        } else if (tecla.equals("Binario")){
            calculadora.Decimal().setEnabled(true);
            calculadora.Decimal().setSelected(false);
            calculadora.Hexadecimal().setEnabled(false);
            calculadora.Hexadecimal().setSelected(false);
            calculadora.Binario().setSelected(true);
            calculadora.Binario().setEnabled(false);
        } else if (tecla.equals("Hexadecimal")){
            calculadora.Binario().setEnabled(false);
            calculadora.Binario().setSelected(false);
            calculadora.Hexadecimal().setEnabled(false);
            calculadora.Hexadecimal().setSelected(true);
            calculadora.Decimal().setEnabled(true);
            calculadora.Decimal().setSelected(false);
        }
        if (calculadora.Decimal().isEnabled()){
            valorOriginal=calculadora.Display().getText();
        }
        if(!valorOriginal.equals("")){
            calculadora.Display().setText(operation.cambiarNumerico(valorOriginal,evt));
        }
    }

    //Metodo que controla el comportamiento de borrar el ultimo digito de la calculadora.
    public void keyBackPressed(CalculatorAdvancedView calculadora){
        calculadora.Display().setText(operation.borrarCaracter(calculadora.Display().getText()));
    }

    //Metodo que limpia por completo el display de la calculadora.
    public void keyCPressed(CalculatorAdvancedView calculadora){
        calculadora.Display().setText("");
    }

    //Metodo que controla como eliminar el ultimo numero digitado en la calculadora.
    public void keyCEPressed(CalculatorAdvancedView calculadora){
        calculadora.Display().setText(operation.keyCePressed(calculadora.Display().getText()));
    }

    //Metodo que controla el comportamiento al presionar un tecla numerica o operacional en la calculadora.
    public void KeyPressed(CalculatorAdvancedView calculadora,java.awt.event.ActionEvent a){
        JButton boton=(JButton)a.getSource();
        if (calculadora.Decimal().isSelected()){
            calculadora.Display().setText(operation.KeyPressed(calculadora.Display().getText(),boton.getText()));
        } 
    }

    //Metodo que controla el cambio de formato numerico de la calculadora.
    public void KeyResultPressed(CalculatorAdvancedView calculadora){
        if (calculadora.Display().getText().length()!=0){
            calculadora.Display().setText(operation.resolver(calculadora.Display().getText()));
        }else {
            calculadora.Display().setText("Formato desconocido. Limpie la pantalla.");
        }
    }





}
